﻿using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using TMPro;
using System.Collections.Generic;

namespace TowerDefence
{
    public class MainMenuManager : MonoBehaviour
    {
        #region 单例模式

        public static MainMenuManager instance;

        private void Awake()
        {
            // 检查是否存在多个MainMenuManager实例
            if (instance != null)
            {
                Debug.LogError("发现多个MainMenuManager实例！");
                return;
            }
            instance = this;
        }

        #endregion

        PlayerDataManager playerDataManager;

        public SceneFader fader;
        [Space]
        [Header("货币")]
        public TextMeshProUGUI moneyText;
        public TextMeshProUGUI gemText;
        [Space]
        [Header("窗口UI")]
        public GameObject backgroundWindow;
        public GameObject mainWindow;
        public GameObject levelWindow;
        public GameObject turretUpgrade;
        public GameObject shopWindow;
        public GameObject menuWindow;
        public GameObject achievementsWindow;
        public GameObject enemyLogWindow;
        public GameObject settingsWindow;
        public GameObject confirmationWindow;

        private void Start()
        {
            // 如果playerDataManager为空，使用PlayerDataManager的实例
            if (playerDataManager == null)
                playerDataManager = PlayerDataManager.instance;

            // 如果fader为空，查找SceneFader的实例
            if (fader == null)
                fader = FindObjectOfType<SceneFader>();
        }

        #region 主菜单窗口函数

        // 打开关卡选择窗口
        public void OpenLevelSelector()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和关卡窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            levelWindow.SetActive(true);
        }

        // 打开塔升级窗口
        public void OpenTowerUpgrade()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和塔升级窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            turretUpgrade.SetActive(true);
        }


        // 打开商店窗口
        public void OpenShop()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和商店窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            shopWindow.SetActive(true);
        }

        // 打开菜单窗口
        public void OpenMenu()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和菜单窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            menuWindow.SetActive(true);
        }

        // 打开成就窗口
        public void OpenAchievements()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和成就窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            achievementsWindow.SetActive(true);
        }

        // 打开敌人日志窗口
        public void OpenEnemyLogWindow()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和敌人日志窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            enemyLogWindow.SetActive(true);
        }

        // 打开设置窗口
        public void OpenSettings()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和设置窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            settingsWindow.SetActive(true);
        }

        // 打开确认窗口
        public void OpenConfirmationWindow()
        {
            // 关闭所有窗口
            CloseAll();
            // 关闭主窗口，激活背景和确认窗口
            mainWindow.SetActive(false);
            backgroundWindow.SetActive(true);
            confirmationWindow.SetActive(true);
        }

        // 关闭所有窗口
        public void CloseAll()
        {
            levelWindow.SetActive(false);
            turretUpgrade.SetActive(false);
            shopWindow.SetActive(false);
            menuWindow.SetActive(false);
            achievementsWindow.SetActive(false);
            enemyLogWindow.SetActive(false);
            settingsWindow.SetActive(false);
            backgroundWindow.SetActive(false);
            confirmationWindow.SetActive(false);
            mainWindow.SetActive(true);
        }

        #endregion

        #region 按钮功能

        // 退出游戏
        public void QuitGame()
        {
            // 退出应用程序
            Application.Quit();
        }

        // 更新货币信息
        public void UpdateCurrency()
        {
            // 更新显示金币和宝石数量
            moneyText.text = PlayerDataManager.Money.ToString();
            gemText.text = PlayerDataManager.Gem.ToString();
        }

        #endregion

    }
}
